program facto;
var
   fa, numero     : int;
procedure proceso(numero : 	int);
begin
   if numero < 0 then
      write('No se puede obtener el factorial de un numero negativo')
   else if numero = 0 then
      write('0! = 1 (Por regla general)')
   else
      begin
      write(numero, '! = ');
      for fa:= numero-1 downto 1 do
         begin
         write(numero);
         numero := (numero * fa);
         writeln(' x ', fa, ' = ',numero);
      end;
   end;
end;